import axios from 'axios'
import store from '@/store'
ElMessage
import {
		ElMessage,
		ElMessageBox,
		ElNotification
	} from "element-plus";
import { showLoading, hideLoading } from '@/utils/loading'
const http = axios.create({
    withCredentials: false,
  baseURL: '/', //process.env.VUE_APP_BASE_API
  // timeout: 1800000,
  headers: {
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Credentials':true,
    'Cache-Control':'No-store',
    'Pragma':'no-cache',
    'token': localStorage.getItem('token'),
    // 'Cookie':'undefined'
  }
})
//请求拦截
http.interceptors.request.use(
    
  (config) => {
    // showLoading()
    if (typeof config !== 'object') {
      console.log('服务端异常！');
      return Promise.reject(config)
    }
    
    config.headers.token = localStorage.getItem('token')
    return config
  },
  (error) => {
    return Promise.reject(new Error(error))
  }
)
//响应拦截
http.interceptors.response.use(
  (response) => {
    // setTimeout(() => {
    //     hideLoading()
    //   }, 200)
	if (response.data && response.data.code == '200003') {
	        window.sessionStorage.clear();
	        // 这里可以根据你的应用逻辑进行重定向或者提示错误信息
	        store.dispatch('app/logout')
	    // 根据响应码判断是否登录过期
	    // switch (response.data.code) {
	    //   case '200003':
	    //     // 清除token，进行重定向或者抛出错误
	    //     window.sessionStorage.clear();
	    //     // 这里可以根据你的应用逻辑进行重定向或者提示错误信息
	    //     console.log('登录过期，请重新登录');
	    //     store.dispatch('app/logout')
	    //     break;
	    //   default:
	    //     // console.error(error);
	    // }
	  }
	const code = response.data.code || 200
	if (code == 200) {
	  return response.data
	} else {
	  ElMessage({ message: response.data.msg || response.data.error_description || "异常，请联系管理员", type: 'error', duration: 5 * 1000 })
	  // return Promise.reject('error')
	}
   return response.data
  },
  (error) => {
	  console.log('error:',error)
	  let { message, response } = error
    if (error && error.response) {
        // 根据响应码判断是否登录过期
        switch (error.response.status) {
          case 902:
            // 清除token，进行重定向或者抛出错误
            window.sessionStorage.clear();
            // 这里可以根据你的应用逻辑进行重定向或者提示错误信息
            console.log('登录过期，请重新登录');
            store.dispatch('app/logout')
            break;
          default:
			  if (message == "Network Error") {
				message = "后端接口连接异常"
			  } else if (message.includes("timeout")) {
				message = "系统接口请求超时"
			  } else if (message.includes("Request failed with status code")) {
				message =  response.data.msg
			  }
			  if (process.env.NODE_ENV != 'production') {
				message = message
			  }
            ElMessage({ message: message || "异常，请联系管理员", type: 'error', duration: 5 * 1000 })
        }
      }
    return error.response.data
  }
)
export default http
